package config

import (
	"log"
	"sync"

	"github.com/jinzhu/configor"
)

// Config 结构体定义了配置文件的结构
type Config struct {
	MySQL  map[string]interface{} `json:"mysql"`
	Server map[string]interface{} `json:"server"`
}

var (
	cfg      *Config
	cfgMutex sync.Mutex
)

const configFile = "config/config.json"

// LoadConfigOnce 函数用于加载配置文件，仅在第一次调用时执行
func LoadConfigOnce() {
	cfgMutex.Lock()
	defer cfgMutex.Unlock()

	if cfg == nil {
		var err error
		cfg = &Config{}
		err = configor.Load(cfg, configFile)
		if err != nil {
			log.Fatalf("加载配置文件出错: %v", err)
		}
	}
}

// GetMySQLConfigValue 函数用于获取 MySQL 配置值
func GetMySQLConfigValue(field string) string {
	LoadConfigOnce()
	if value, exists := cfg.MySQL[field]; exists {
		return value.(string)
	}
	return "Unknown field"
}

// GetServerConfigValue 函数用于获取服务器配置值
func GetServerConfigValue(field string) string {
	LoadConfigOnce()
	if value, exists := cfg.Server[field]; exists {
		return value.(string)
	}
	return "Unknown field"
}
